package cn.thinkjoy.LawDataForExcel.excel;

import cn.thinkjoy.LawDataForExcel.bean.ApunishNoticeInfo;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.HorizontalAlignment;

import javax.print.DocFlavor;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.List;

/**
 * Created by thinkjoy on 2017/6/19.
 * 写入数据到Excel
 */
public class PoIExcelInPut {

    /**
     * 设置样式
     * @param wb
     */
    public HSSFCellStyle setMyStyle(HSSFWorkbook wb, int flag){
        HSSFCellStyle style=wb.createCellStyle();
        HSSFDataFormat format = wb.createDataFormat();
        HSSFFont font=wb.createFont();
        font.setFontHeightInPoints((short) 11);//设置字体大小
        font.setFontName("宋体");
        if(flag==1){
            font.setBold(true);//加粗
            style.setAlignment(CellStyle.ALIGN_CENTER);
        }else {
            style.setAlignment(HorizontalAlignment.LEFT);
        }
        style.setWrapText(true);
        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
        style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
        style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
        style.setFont(font);
        style.setDataFormat(format.getFormat("@"));
        return style;
    }

    public String createExcel(List<ApunishNoticeInfo> apunishInfos){
        HSSFWorkbook wb=new HSSFWorkbook();//生成Workbook
        HSSFSheet sheet=wb.createSheet("第一页");//创建HSSFSheet对象
        HSSFRow row=sheet.createRow(0);//创建行对象,参数为行索引(excel的行)
        CellStyle style=setMyStyle(wb,1);
        CellStyle style1=setMyStyle(wb,0);
        row.setHeight((short) 700);//设置行高
        row.createCell(0).setCellValue("行政处罚决定文书号");
        row.createCell(1).setCellValue("案件名称");
        row.createCell(2).setCellValue("违法企业名称或自然人姓名");
        row.createCell(3).setCellValue("违法事实");
        row.createCell(4).setCellValue("行政处罚依据");
        row.createCell(5).setCellValue("行政处罚结果");
        row.createCell(6).setCellValue("作出行政处罚决定日期");
        row.createCell(7).setCellValue("处罚类别");
        row.createCell(8).setCellValue("行政相对人代码(统一社会信用代码)");
        row.createCell(9).setCellValue("行政相对人代码(组织机构代码)");
        row.createCell(10).setCellValue("行政相对人代码(工商登记码)");
        row.createCell(11).setCellValue("行政相对人代码(税务登记号)");
        row.createCell(12).setCellValue("行政相对人代码(居民身份证号)");
        row.createCell(13).setCellValue("法定代表人姓名");
        row.createCell(14).setCellValue("处罚截止期");
        row.createCell(15).setCellValue("处罚机关");
        for(int i=0;i<16;i++){
            wb.getSheet("第一页").getRow(0).getCell(i).setCellStyle(style);
            sheet.setColumnWidth(i,"作出行政处罚决定日期".toString().length()*1024);//设置列宽
        }
        /**
         * 下面是具体内容,表格具体内容
         */
        for(int i=0;i<apunishInfos.size();i++){
            HSSFRow rowI=sheet.createRow(i+1);
            rowI.setHeight((short) 1200);
            rowI.createCell(0).setCellValue(apunishInfos.get(i).getPunishNumber());
            rowI.createCell(1).setCellValue(apunishInfos.get(i).getCaseName());
            rowI.createCell(2).setCellValue(apunishInfos.get(i).getAdminiName());
            rowI.createCell(3).setCellValue(apunishInfos.get(i).getPunishReason());
            rowI.createCell(4).setCellValue(apunishInfos.get(i).getPunishBasis());
            rowI.createCell(5).setCellValue(apunishInfos.get(i).getPunishMoney());
            rowI.createCell(6).setCellValue(apunishInfos.get(i).getEffectDate());
            rowI.createCell(7).setCellValue("罚款");
            rowI.createCell(8).setCellValue(apunishInfos.get(i).getCreditnumber());
            rowI.createCell(9).setCellValue(apunishInfos.get(i).getOrganiznumber());
            rowI.createCell(10).setCellValue(apunishInfos.get(i).getRegistnumber());
            rowI.createCell(11).setCellValue(apunishInfos.get(i).getTaxnumber());
            rowI.createCell(12).setCellValue(apunishInfos.get(i).getIdNumber());
            rowI.createCell(13).setCellValue(apunishInfos.get(i).getLegalname());
            rowI.createCell(14).setCellValue(apunishInfos.get(i).getEndDate());
            rowI.createCell(15).setCellValue(apunishInfos.get(i).getPunishOffice());
            for(int j=0;j<16;j++){
                wb.getSheet("第一页").getRow(i+1).getCell(j).setCellStyle(style1);
            }
        }

//        导出Excel文件
        try {
//            String time=apunishInfos.get(0).getEffectDate().replaceAll("/","-");
            String time="最新数据";
            String os=System.getProperty("os.name");
            String localpath="F:";
            if(os.toLowerCase().startsWith("windows")){//windows环境下保存路径
                localpath="F:";
            }else {//非windows（指linux下）保存的路径
                localpath="/home";
            }
            String path=localpath+File.separator+time;
            File file = new File(path);
            if(!file.exists()){
                file.mkdirs();
            }
            FileOutputStream output=new FileOutputStream(path+File.separator+apunishInfos.get(0).getPunishReason()+".xls");
            wb.write(output);
            output.flush();
            output.close();
            wb.close();
            System.out.println("excel生成成功");
            return path;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            System.out.println("excel生成失败");
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("excel生成失败");
            return null;
        }
    }
}